package lambda03;

import org.junit.Test;

/**
 * 二.简略格式
 *   a.(参数名)->{语句1;语句2;...}
 *          //()中可以省略参数类型,因为Lambda可以根据代码自动推断类型
 *
 *   b.参数名->{语句1;语句2;...}
 *          //当接口中的抽象方法的形参只有一个的时候,Lambda表达式可以省略()
 *
 *   c.(参数类型1 参数名1,参数类型2 参数名2,....)-> 语句;
 *          //当重写接口中的抽象方法只有一条语句的时候,我们可以省略{}
 *          //省略{}的同时,也要省略return和;
 */



public class LambdaDemo02 {
    @Test
    public void test01(){
        method("你好",(str)->{
            System.out.println(str);    // 你好
        });
    }

    @Test
    public void test02(){
        method02(4,19,(a,b)->{return a+b;}); //  23
    }

    @Test
    public void test03(){
        method("你好",str->{
            System.out.println(str);
        });
    }

    @Test
    public void test04(){
        //method02(3,4,a,b->{  });
    }



    @Test
    public void test05(){
        method("张三丰",str-> System.out.println(str)); // 张三丰
    }

    @Test
    public void test06(){
        method02(3,9,(a,b)->a+b);  //  12
    }


    public void method(String str, Printer p) {
        p.print(str);
    }
    public void method02(int a, int b, Calculator c) {
        System.out.println(c.getSum(a, b));
    }
}
